PARAMETERS v_variable TYPE table-champs.
SELECT-OPTIONS: v_date FOR mara-ersda DEFAULT '20010101' TO '20011231'.
SELECT-OPTIONS: v_variable FOR table-champs.
PARAMETERS rb_01 RADIOBUTTON GROUP rb_0 DEFAULT 'X' USER-COMMAND ucomm.
PARAMETERS rb_02 RADIOBUTTON GROUP rb_0.
Ils ont aussi un nom de variable pour définir si leur état est 'X' ou ' '.
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
SELECTION-SCREEN END OF SCREEN 200.
SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.
SELECTION-SCREEN END OF SCREEN 300.
SELECTION-SCREEN: BEGIN OF TABBED BLOCK vb_onglets FOR 30 LINES,
TAB (20) tab0 USER-COMMAND ucomm_1 DEFAULT SCREEN 100,
TAB (20) tab1 USER-COMMAND ucomm_2 DEFAULT SCREEN 200,
TAB (20) tab2 USER-COMMAND ucomm_3 DEFAULT SCREEN 300,
END OF BLOCK vb_onglets.
- Il permet d'afficher sous forme de tableau des données
- Il peut aussi les trier et les organiser.
TRY.
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv)
CHANGING t_table = lt_mara ).
lo_alv->get_functions( )->set_all( abap_true ).
DATA(lo_layout) = lo_alv->get_layout( ).
lo_layout->set_key( VALUE salv_s_layout_key( report = sy-repid ) ).
lo_layout->set_default( abap_true ).
lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
lo_alv->display( ).
CATCH cx_salv_msg.
CATCH cx_salv_not_found.
ENDTRY.
TABLES: mara.
TYPES: BEGIN OF ty_mara,
nom TYPE aenam,
date TYPE ersda,
END OF ty_mara.
DATA: lt_mara TYPE TABLE OF ty_mara,
ls_mara TYPE ty_mara.
SELECT-OPTIONS: v_date FOR mara-ersda.
SELECT-OPTIONS: v_nom FOR mara-aenam.
SELECT FROM mara
FIELDS aenam, ersda
WHERE ersda IN @v_date "AAAAMMJJ
AND aenam IN @v_nom
INTO TABLE @lt_mara.
LOOP AT lt_mara INTO ls_mara.
WRITE: / ls_mara-nom, '--', ls_mara-date.
ENDLOOP.
SELECT from mara
FIELDS mandt,
matnr,
ernam,
mtart
into table @data(lt_mara).
LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(
WRITE: /,
ENDLOOP.
TABLES: mara, bkpf.
SELECT a~aenam,
a~ersda,
b~bukrs
INTO TABLE @lt_table
FROM mara AS a
INNER JOIN bkpf AS b
ON a~ersda = b~bldat
WHERE a~ersda In @v_date
AND a~aenam In @v_nom.
SORT lt_mara by date.
TABLES: mara.
TYPES: BEGIN OF ty_mara,
date TYPE ersda,
nom TYPE aenam,
matiere TYPE wrkst,
END OF ty_mara.
DATA: lt_mara TYPE TABLE OF ty_mara,
ls_mara TYPE ty_mara.
SELECT-OPTIONS: v_date FOR mara-ersda.
SELECT-OPTIONS: v_nom FOR mara-aenam.
SELECT FROM mara
FIELDS aenam, ersda
WHERE ersda IN @v_date "AAAAMMJJ
AND aenam IN @v_nom
INTO TABLE @lt_mara.
LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(
AT NEW date.
WRITE: /,
ENDAT.
AT END OF date.
WRITE: /, '------------------', /.
ENDAT.
ENDLOOP.
DATA: variable_1 TYPE i,
variable_2 TYPE i,
variable_3 TYPE i.
Elle va de paire avec l'instruction 'GET REFERENCE OF' qui permet de renseigner la case mémoire d'une variable.
DATA: lo_variable_1 TYPE REF TO i.
DATA: lo_variable_2 TYPE REF TO i.
DATA: lo_variable_3 TYPE REF TO i.
GET REFERENCE OF variable_2 INTO lo_variable_2.
GET REFERENCE OF variable_3 INTO lo_variable_3.
x = variable_1.
x = lo_variable_1->*.
lo_variable_1->* = lo_variable_2->*.
--------------------------------------------------------------------------------------------------------
* Déclaration des variables
* ###############################################
variable_2 TYPE i,
variable_3 TYPE i,
increment TYPE i.
DATA: it_table TYPE TABLE OF REF TO i."data.
DATA: lo_variable_1 TYPE REF TO i.
DATA: lo_variable_2 TYPE REF TO i.
DATA: lo_variable_3 TYPE REF TO i.
* Asignation des emplacements de variables
* ###############################################
GET REFERENCE OF variable_2 INTO lo_variable_2.
GET REFERENCE OF variable_3 INTO lo_variable_3.
variable_1 = 1.
variable_2 = 2.
variable_3 = 3.
APPEND lo_variable_1 TO it_table.
APPEND lo_variable_2 TO it_table.
APPEND lo_variable_3 TO it_table.
* Code principale
* ###############################################
lo_variable_1->* = lo_variable_2->*.
PERFORM afficher.
increment = 1.
DO 2 TIMES.
TRY.
lo_variable_1 = it_table[ increment ].
lo_variable_1->* = lo_variable_3->*.
CATCH cx_sy_itab_line_not_found.
WRITE 'erreur'.
ENDTRY.
increment = increment + 1.
ENDDO.
PERFORM afficher.
FORM afficher.
WRITE: / |variable_1 = { variable_1 }|,
/ |variable_2 = { variable_2 }|,
/ |variable_3 = { variable_3 }|,
/ 'â'.
ENDFORM.
variable_1 = 1
variable_2 = 2
variable_3 = 3
variable_1 = 2
variable_2 = 2
variable_3 = 3
variable_1 = 3
variable_2 = 3
variable_3 = 3
DATA:
variable_final(70) TYPE c,
v_date(20) TYPE c,
v_nom(20) TYPE c,
v_age TYPE i.
variable_final = space.
v_date = '31 Janvier 2024'.
v_nom = 'Joël'.
v_age = '22'.
variable_final = |Le { v_date } { v_nom } Ă { v_age } ans.|.
WRITE variable_final.
LOOP AT lt_mara INTO ls_mara.
ls_mara-nom = ''.
MODIFY lt_mara FROM ls_mara TRANSPORTING nom.
ENDLOOP.
ls_mara-nom = ''.
MODIFY lt_mara FROM ls_mara TRANSPORTING nom WHERE nom IS NOT INITIAL.
LOOP AT lt_mara ASSIGNING FIELD-SYMBOL(
ENDLOOP.
DATA: w_name TYPE string VALUE `Valeur 1`,
w_index TYPE i VALUE 1.
FIELD-SYMBOLS <fs_test> TYPE any.
ASSIGN w_name TO <fs_test>.
PERFORM afficher.
<fs_test> = 'Valeur 2'.
PERFORM afficher.
ASSIGN w_index TO <fs_test>.
PERFORM afficher.
ADD 1 TO <fs_test>.
PERFORM afficher.
FORM afficher.
WRITE: <fs_test>, /.
ENDFORM.